﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo1
{
    class Program
    {
        static void Main(string[] args)
        {
            //一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
            //请编写相关代码，
            //1、捕获FormatException异常，并打印输出“异常已处理；
            //2、捕获OverflowException异常，数值超出float范围的异常，并打印输出“异常已处理；
            //3、捕获一般异常Exception异常。
            //4、最终处理finally
            //录入成绩结束后，请输出，总学生数，总分数，平均分。
            float d=0;
            string str;
            Console.WriteLine("欢迎使用考试管理系统！");
            Dictionary<string, float> dic = new Dictionary<string, float>();


            while (true)
            {
                
                while (true)
                {
                    Console.WriteLine("请输入学号：");
                    str = Console.ReadLine();
                    if (dic.ContainsKey(str))
                    {
                        Console.WriteLine("学号已存在，请重新输入：");
                        continue;
                    }
                    break;
                }
                try
                {

                    Console.WriteLine("请录入考生成绩：");
                    d = float.Parse(Console.ReadLine());
                }
                catch (FormatException e)
                {
                    Console.WriteLine("异常已处理");
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.Source);
                    Console.WriteLine(e.StackTrace);

                }
                catch (OverflowException e)
                {
                    Console.WriteLine("数值超出float范围的异常，异常已处理");
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.Source);
                    Console.WriteLine(e.StackTrace);
                }
                catch (Exception e)
                {
                    Console.WriteLine("异常已处理");
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.Source);
                    Console.WriteLine(e.StackTrace);
                }
                finally
                {
                    Console.WriteLine("最终处理");
                }
                dic.Add(str,d);

                Console.WriteLine("继续输入请输入任意内容，结束输入请输入1");
                string str1 = Console.ReadLine();
                if (str1=="1")
                {
                    break;  
                }
            }

            float Count = dic.Count;
            float Sum = 0;
            foreach (var values in dic.Values)
            {
                Sum += values;
            }
            float Age;
            Age =Sum/Count;
            Console.WriteLine($"总学生数{Count}，总分数{Sum}，平均分{Age}");


        }
    }
}
